// 二次封装axios 拦截器
import axios from 'axios'
import config from '../config/index.js'

// 设置配置 根据开发 和 生产环境不一样 
const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro

class HttpRequest{
    constructor(baseUrl) {
        this.baseUrl = baseUrl
    }

    getInsideConfig() {
        const config = {
            baseUrl: this.baseUrl,
            header: {
                
            }
        }
        return config
    }

    interceptors(instance) {
        //添加请求拦截器
        instance.interceptors.request.use(function (config) {
            // 在发送请求之前做些什么
            return config;
        }, function (error) {
            return Promise.reject(error+'请求错误')
        });
        //添加响应拦截器
        instance.interceptors.response.use(function (response) {
            // console.log('响应成功了，这是响应回来的数据',response);
            //对响应数据做点什么
            return response;
        }, function (error) {
            console.log(error,'error');
            //对响应错误做点什么
            return Promise.reject(error+'响应错误')
        })
    }

    request(options) {
        // 请求
        // /api/getList  /api/getHome
        const instance = axios.create()
        options = { ...this.getInsideConfig(), ...options }
        this.interceptors(instance)
        return instance(options)
    }
}

export default new HttpRequest(baseUrl)